💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    6.배포 정리 | ✅ 저자: 이유정(박사)

    준비사항 Python 가상환경만들기 MySQL 대신 PyMySQL사용 :

    • mysqlclient 컴파일 이슈 피하기 위해 pymysql 사용 .env 파일과 --envvars 둘다 사용하는것이 좋습니다. .env예시
    DB_NAME=restaurant_db
    DB_USER=admin
    DB_PASSWORD=bKkiQMw...
    DB_HOST=airest-db.cfwgaqsu2fpk.ap-northeast-2.rds.amazonaws.com
    DB_PORT=3306
    
    S3_BUCKET=airest-dev
    S3_REGION=ap-northeast-2
    S3_CUSTOM_DOMAIN=airest-dev.s3.ap-northeast-2.amazonaws.com
    AWS_STORAGE_BUCKET_NAME=airest-dev
    AWS_ACCESS_KEY_ID=AKIA2CZVE...
    AWS_SECRET_ACCESS_KEY=6e5ei9acVp...
    
    ALLOWED_HOSTS=.elasticbeanstalk.com
    DEBUG=False
    SECRET_KEY=mCeJY8henHKouQElHUfrYEgqV...
    

    requirements.txt

    Django==4.2.7
    djangorestframework==3.16.0
    pillow==11.3.0
    python-dotenv==1.1.1
    boto3==1.39.9
    django-storages==1.14.6
    gunicorn>=23.0
    PyMySQL>=1.0.2
    

    정적/미디어 설정 (S3용)django-storages, boto3 설치 후 설정 적용


    GitHub 레포지토리 재정비 및 CI 테스트

    배포전 마지막 수정된 내용에 반드시 커밋을 찍어서 push 해야 합니다.
    

    MySQL 대신 pymysql 사용 settings.py

    import pymysql
    pymysql.install_as_MySQLdb()
    

    필수 패키지 설치

    pip install -r requirements.txt
    pip freeze > requirements.txt
    

    AWS 리소스 생성 순서

    • RDS 생성 (MySQL)
    • MySQL 엔진, 공용 액세스 허용 ✅
    • 보안그룹: Elastic Beanstalk과 동일 VPC의 퍼블릭 서브넷 허용
    • 생성 후 엔드포인트 복사해서 .env에 DB_HOST로 설정 ==배포설정2 자료를 참고하세요.==

    S3 버킷 생성

    • S3 > 버킷 생성 (airest-dev)
    • 퍼블릭 액세스 허용 해제 (정적 파일만 저장)
    • 버킷 정책 및 CORS 설정 필요 시 적용

    IAM 사용자 생성 (S3 권한용)

    • AWS 콘솔 > IAM > 사용자 생성
    • AmazonS3FullAccess, AmazonRDSFullAccess, AWSElasticBeanstalkFullAccess
    • Access Key ID와 Secret Key 저장 → .env 또는 eb setenv로 설정 ==배포설정2 자료를 참고하세요.==

    Elastic Beanstalk 환경 생성 .elasticbeanstalk/config.yml 자동 생성:

    eb init -p python-3.11 airest-dev
    

    이 명령은 Elastic Beanstalk 애플리케이션을 초기화하고 .elasticbeanstalk/config.yml 파일을 자동 생성합니다.

    환경생성: 터미널에서

    eb create airest-dev \
    --vpc.id vpc-078a5406b51b61a90 \
    --vpc.securitygroups sg-0fa6d2c29e9cb8f63 \
    --vpc.ec2subnets subnet-0aef092ddd766bb5f,subnet-0c9149f519d6231e1,subnet-012c0742f20a693d3,subnet-075377c222032771e \
    --vpc.elbpublic \
    --vpc.publicip \
    --envvars DB_NAME=restaurant_db,DB_USER=admin,DB_PASSWORD=bKkiQMw0OAEdN0ruVfgG,DB_HOST=airest-db.cfwgaqsu2fpk.ap-northeast-2.rds.amazonaws.com,S3_BUCKET=airest-dev,S3_REGION=ap-northeast-2,S3_CUSTOM_DOMAIN=airest-dev.s3.ap-northeast-2.amazonaws.com,DEBUG=False,AWS_STORAGE_BUCKET_NAME=airest-dev,ALLOWED_HOSTS=.elasticbeanstalk.com,AWS_ACCESS_KEY_ID=AKIA2CZVEQ...,AWS_SECRET_ACCESS_KEY=6e5ei9acVpcPf3...
    

    deploy전 최종배포

    git add .
    git commit -m "배포 준비 완료"
    git push origin main
    

    EB 배포

    eb deploy
    

    마이그레이션

    source /var/app/venv/*/bin/activate
    python manage.py migrate
    python manage.py createsuperuser
    
    TOP
    preload preload